package leetcode101.tree;

import java.util.Deque;
import java.util.LinkedList;

/**
 * @author Synhard
 * @version 1.0
 * @class Code17
 * @description 513. 找树左下角的值
 * 给定一个二叉树，在树的最后一行找到最左边的值。
 *
 * 示例 1:
 *
 * 输入:
 *
 *     2
 *    / \
 *   1   3
 *
 * 输出:
 * 1
 *
 * 示例 2:
 *
 * 输入:
 *
 *         1
 *        / \
 *       2   3
 *      /   / \
 *     4   5   6
 *        /
 *       7
 *
 * 输出:
 * 7
 *
 * 注意: 您可以假设树（即给定的根节点）不为 NULL。
 *
 * @tel 13001321080
 * @email 823436512@qq.com
 * @date 2021-06-26 9:12
 */
public class Code17 {

    public static void main(String[] args) {

    }

    public static int findBottomLeftValue(TreeNode root) {
        Deque<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        TreeNode last = new TreeNode();
        while (!queue.isEmpty()) {
            last = queue.removeFirst();
            if (last.right != null) {
                queue.addLast(last.right);
            }
            if (last.left != null) {
                queue.addLast(last.left);
            }
        }
        return last.val;
    }

}

/*
从右到左的层序遍历
 */